package juego;
import java.awt.Color;
import java.awt.Image;
import java.io.IOException;

import exceptions.DestinoException;
import graphic.ImageUtils;

/**
 * Clase Destino. Es un elemento destino.
 */
public class Destino extends Elemento{
	
	/** Contiene el color de la instancia destino */
	private Color color;
	private boolean estado=false;

	/**
	 * Crea un nuevo destino
	 * 
	 * @param rot la rotacion del destino debe ser 0
	 * @param rojo color rojo
	 * @param verde color verde
	 * @param azul color azul
	 * 
	 * @throws DestinoException tira una excepcion de destino
	 */
	public Destino(int rot, int rojo, int verde, int azul) throws DestinoException{
		if(rot!=0)
			throw new DestinoException("El destino tiene que tener rotacion en 0.");
		try{
			this.color = new Color(rojo, verde, azul);
		}catch(IllegalArgumentException e){
			throw new DestinoException("El destino tiene mal los colores.");
		}
	}
	
	public String toString(){
		return "D";
	}
	
	public String toStringGuardar(){
		return "2,0,"+this.color.getRed()+","+this.color.getGreen()+","+this.color.getBlue();
	}
	
	@Override
	public Image dibujar() {
		Image img1, img2 = null;
		try {
			img1 = ImageUtils.loadImage("resources/target.png");
			img2 = ImageUtils.replaceColor(img1, new Color(0, 0, 255), color);
		} catch (IOException e) {
			System.out.println("Error para cargar la imagen.");			
		}
		return img2;
	}
	
	/**
	 * Cambia el estado.
	 */
	public void cambiarEstado(){
		estado = !estado;
	}
	
	public int[] getReturn(int anterior) {
		this.cambiarEstado();
		int aux[]=new int[2];
		aux[0] = 1;
		aux[1] = anterior;
		return aux;
	}
	
	/**
	 * devuelve el color del destino.
	 * 
	 * @return el color
	 */
	public Color getColor(){
		return color;
	}
}